您好,欢迎来到达州工业云! 平台首页 企业驾驶舱 帮助中心 企业登录 企业注册

HI,欢迎使用达州工业云平台!

账号必须大于2位

创新资源平台
服务平台首页>专利库>专利详情

一种面向MIPS平台的内存虚拟化方法

  • 申请号:CN201210001188.2 申请公布号: CN102567217B
  • 申请日: 2012-01-04 申请公布日: 2014-12-24
  • 申请(专利权)人: 专利代理机构: 北京慧泉知识产权代理有限公司
  • 分类号:G06F12/02;G06F9/455

专利介绍

本发明涉及一种面向MIPS平台的内存虚拟化方法。该方法包括面向MIPS平台的内存虚拟化的地址组成方法;面向MIPS平台的内存虚拟化在地址空间组成方法;面向MIPS平台的内存虚拟化的地址组成和地址空间的映射方法;面向MIPS平台的内存虚拟化的地址组成和地址空间的映射维护机制以及面向MIPS平台的内存虚拟化地址映射实现流程。优点是:(1)克服了MIPS处理器无硬件辅助支持、MIPS平台下内存虚拟化三层地址映射、多个虚拟机对物理内存访问之间的隔离与安全等技术难题。(2)系统具有轻量级的优点。(3)可以满足嵌入式领域的虚拟化应用需求,也可以满足服务器领域的虚拟化应用需求。
1.一种面向MIPS平台的内存虚拟化方法,该方法采用宿主模型架构,包括如下模块:物理内存、宿主OS、虚拟机内核、内存虚拟化、宿主QEMU进程、虚拟内存以及客户OS;该内存虚拟化方法包括面向MIPS平台的内存虚拟化的地址组成方法,该地址组成方法是基于以上模块构成,包括四种地址,分别是客户机虚拟地址,即GVA;客户机物理地址,即GPA;宿主机虚拟地址,即HVA;宿主机物理地址,即HPA;其中,该方法进一步包括面向MIPS平台的内存虚拟化在地址空间组成方法,主要包括四种地址空间:分别是客户机虚拟地址空间、客户机物理地址空间、宿主机虚拟地址空间和宿主机物理地址空间;其中,该方法进一步包括面向MIPS平台的内存虚拟化的地址组成和地址空间的映射方法,分别是客户机虚拟地址属于客户机虚拟地址空间,客户机物理地址属于客户机物理地址空间,宿主机虚拟地址属于宿主机虚拟地址空间,宿主机物理地址属于宿主机物理地址空间;其中,该方法进一步包括面向MIPS平台的内存虚拟化的地址组成和地址空间的映射维护机制,包括客户机TLB和页表,客户机物理页描述符表,宿主机TLB和页表,宿主机机物理页描述符表;其中,该方法进一步包括面向MIPS平台的内存虚拟化地址映射实现流程,其流程核心为构建GVA->HPA的地址映射,即GVA->GPA->HVA->HPA,具体流程为:S1:客户机模块发出访问某个GVA的命令;S2:映射处理模块获得GVA->GPA的映射;S3:映射处理模块获得GPA->HVA的映射;S4:映射处理模块获得HVA->HPA的映射;S5:映射处理模块将三个映射叠加得到(GVA,HPA)映射,填充影子TLB中;S6:返回客户机;其中,该方法的具体实现流程为:S21:内核GVA的影子TLB填充;S22:执行客户机TLB的填充;S23:非内核GVA的影子TLB填充;其中,S21内核GVA的影子TLB填充的具体流程为:S1:客户机模块发出访问某个GVA的命令;S111:判断GVA是否属于客户机内核地址空间;S1112:非内核GVA的处理;S1111:执行GPA映射;GPA=GVA&某地址;S112:在GPPDT中查找GPA对应的HVA;S113:在宿主机TLB中查找HVA对应的HPA;S114:将(GVA,HPA)映射存入影子TLB中;S6:返回客户机;其中,S22执行客户机TLB的填充的具体流程为:S1:客户机模块发出访问某个GVA的命令;S111:判断GVA是否属于客户机内核地址空间;S1212:内核GVA的处理;S1211:客户机TLB中无(GVA,GPA)映射;S122:向客户机注入TLB缺失异常;S124:执行TLB指令填充客户机TLB;S125:模拟TLB指令;S125:返回客户机代码中断处;S6:返回客户机;其中,S23非内核GVA的影子TLB填充的具体流程为:S1:客户机模块发出访问某个GVA的命令;S111:判断GVA是否属于客户机内核地址空间;S1212:内核GVA的处理;S1311:在客户机TLB中存在(GVA,GPA)映射;S13112:填充客户机TLB;S13111:在GPPDT中查找(GPA,HVA)映射;S132:在宿主机TLB中查找(HVA,HPA)映射;S133:将(GVA,HPA)映射存入影子TLB中;S6:返回客户机。技术领域
本发明公开了一种内存虚拟化方法,尤其涉及面向MIPS平台的内存虚拟化方法(MIPSVMem),MIPS指“无内部互锁流水级的微处理器”(Microprocessorxa0withoutinterlockedxa0pipedxa0stages),属于计算机技术领域。
背景技术
系统虚拟化是计算机系统结构与计算机系统软件相结合的一个重要研究方向。它通过在计算机系统硬件和操作系统之间增加虚拟机监控器(Virtualxa0Machinexa0Monitor,简称VMM),对计算机系统的物理资源进行抽象,隔离硬件系统结构和软件之间的紧密依赖关系;通过动态组织CPU、内存、I/O等多种物理资源,灵活构建多个相互隔离的虚拟计算机,满足多样化的应用需求;通过发掘应用间的时间和空间的并行性,提高资源的利用率。虚拟化技术在20世纪60年代首次提出,当时主要是为了对大型机硬件进行分区以提高硬件利用率。在20世纪80年代和90年代,由于客户端-服务器应用程序以及价格低廉的x86服务器和台式机的发展,在分布式计算技术日益成熟的同时,虚拟化技术当时基本销声匿迹了。20世纪90年代Windows的广泛使用以及Linux作为服务器操作系统的出现,奠定了x86服务器的行业标准地位。随着x86服务器和桌面部署的增长,带来了新的如伸缩性、灵活性和可靠性差等IT基础架构和运作难题,这使得虚拟化技术近年来得到了复兴。近年随着云计算的日益推广,虚拟化技术在商业应用上的优势日益体现。虚拟化改变了企业传统的IT基础设施部署和管理方式,大幅提高了基础设施的伸缩性、灵活性和可靠性。其概念已经深入到企业甚至每个人的日常的工作与生活中,成为了目前全球软件产业中发展最快的技术之一。近年来,随着MIPSxa0CPU性能的飞速发展,MIPSxa0CPU的应用已经不仅限于传统的嵌入系统领域,部分高性能的MIPSxa0CPU也被逐渐应用到商用服务器中,也即无论嵌入式还是服务器领域都对MIPS平台及其虚拟化应用需求的日益扩大。另一方面随着虚拟化技术快速发展以来,包括MIPS架构处理器在内的嵌入式处理器领域,对虚拟化技术提出了新的需求。然而,通过对X86,PowerPC(PPC),MIPS等的对比(表1)可以看出,MIPSxa0CPU存在迫切需要解决虚拟化漏洞并且并不支持硬件辅助虚拟化等问题,这使得面向MIPS平台实现系统虚拟机面临技术挑战。ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="700"/>表1如无恰当的虚拟化技术的支持,将给MIPSxa0CPU在嵌入式和服务器市场的推广带来巨大的阻力。MIxa0PS处理器要想在嵌入式系统,尤其是服务器市场占用更重要的一席之地,虚拟化技术,尤其是面向其虚拟化漏洞和无硬件辅助支持问题的技术突破刻不容缓。面向MIPS平台的系统虚拟机包括CPU虚拟化、内存虚拟化和IO虚拟化关键技术。I内存虚拟化作为系统虚拟机中的关键技术之一,通常采用分块共享的思想,即VMM需要将机器的内存分配给各个虚拟机,并维护机器内存和虚拟机所见“物理”内存的映射关系。通过内存虚拟化,每个虚拟机能够拥有一个从0开始的连续物理地址空间;并且,各虚拟机间能够有效隔离、调度及共享内存资源。和本发明相关的系统虚拟机研究归纳起来可包括两方面进展,面向系统虚拟机的设计和实现关键技术(如中国专利申请号为200610139664.1,名称为“一种虚拟机系统及其CPU调度方法”;中国专利公开号为CN1740989,名称为“通用嵌入式系统虚拟页属性管理方法”),基于系统虚拟机的应用关键技术(如中国专利公开号为CN102194080A,名称为“一种基于内核虚拟机的rootkit检测机制及检测方法”;中国专利申请号为02137511.9,名称为“一种用于嵌入式系统软件开发的虚拟机装置”;中国专利公开号为CN102243571A,名称为“一种面向嵌入式Hypervisor的多视窗显示虚拟化操作方法”)。代表性的系统包括1997年斯坦福大学所研制的基于MIPSxa0R10000处理器的虚拟化系统DISCO,以及Openxa0Kernelxa0Labs所研制的开源系统软件平台OKL4。但总结现有研究结果和实现系统来看,现有的研究和发明存在如下趋势和问题:在体系结构上,大部分是面向X86等架构平台提出的设计、实现和改进关键技术发明,在面向嵌入式系统平台的发明上,虚拟机应用技术(如利用虚拟机技术辅助实现虚拟化多视窗显示和检测,对应于中国专利公开号为CNxa0102194080A,名称为“一种基于内核虚拟机的rootkit检测机制及检测方法”;中国专利公开号为CN102243571A,名称为“一种面向嵌入式Hypervisor的多视窗显示虚拟化操作方法”等)偏多。虚拟化技术在在60-70年代提出,在80-90年代基本销声匿迹,直到90年代再次复兴,并且前期主要采用重量的系统级虚拟机(如QEMU,XEN等),基于重量级虚拟机的系统虚拟机存在性能开销较大的问题。而随着虚拟机应用范围的推广,近期轻量的操作系统级/内核级虚拟机(如KVM,OPENVZ等)得到日益广泛的重视。在面向MIPS平台的内存虚拟化技术方面,为了让Guestxa0OS能够拥有一个隔离的、从0开始的连续内存空间,虚拟机监控器(VMM)引入了一层新的地址空间,即客户机物理地址空间。从而形成了从应用程序所在的客户机虚拟地址(Guestxa0Virtualxa0Address,GVA)到客户机物理地址(Guestxa0Physicalxa0Address,GPA),再到宿主机物理地址(HostPhysicalxa0Address,HPA)的三层地址映射结构。这种三层结构使得原来的非虚拟化环境下的内存管理单元MMU失去了作用,因为普通MMU只能完成一次虚拟地址到物理地址的转换。因此,VMM需要为每个虚拟机动态地维护了GPA到HPA的映射关系。VMM通过截获修改客户机页表或者刷新TLB的指令,将GVA到HPA的映射填入MMU中,完成三层地址映射的建立。为了实现虚拟机的对一个GVA的访存操作,VMM需要完成三次的地址转换:首先GVA将被转换为GPA,然后GPA被进一步转换为HVA,最后HVA再被转换为HPA,完成访存操作。由于处理器的MMU仅能完成一次地址转换,因此,内存虚拟化需解决的一个关键问题就是,如何协助MMU完成GVA到HPA的多次地址转换操作。另外,内存虚拟化还需要解决多个虚拟机对物理内存访问之间的隔离与安全问题。多个虚拟机运行于同一个物理机上,不同虚拟机所使用的虚拟内存实际上对应于同一个物理机上的不同区域。为了保证多个虚拟机之间的隔离与安全,VMM需要让每个虚拟机运行于一个受保护的环境中,防止虚拟机的访存操作对物理内存产生破坏。综上可知,目前面向MIPS平台的系统虚拟化技术的研究和发明相对缺乏,尤其是针对MIPS平台无硬件辅助支持,内存虚拟化时面临的三层地址映射、多个虚拟机对物理内存访问之间的隔离与安全等问题,基于轻量级虚拟机(内核虚拟机KVM)的内存虚拟化的研究和发明更为缺乏。
发明内容
本发明的目的是提供一种面向MIPS平台的内存虚拟化方法,具体而言是针对MIPS平台虚拟化漏洞、无硬件辅助支持、内存虚拟化三层地址映射、多个虚拟机对物理内存访问之间的隔离与安全问题,基于轻量级内核虚拟机(KVM),发明一种基于“影子TLB”面向MIPS平台的内存虚拟化方法,以实现宿主机与客户机之间的内存隔离和客户机虚拟化内存的分配与管理,为面向MIPS平台的系统虚拟机以及上层虚拟化等应用提供内存虚拟化系统软件支持。本发明的技术思路如下:由于X86平台主要采用影子页表技术,而MIPS平台指令集架构采用软件维护的TLB的技术,因此,不同于基于内核虚拟机、采用“影子页表”技术实现的面向X86平台的内存虚拟化方法,本发明主要基于内核虚拟机,采用“影子TLB”技术实现内存虚拟化方法。其中,TLB(Translationxa0Lookasidexa0Buffer,中文名称为旁路转换缓冲器)是MMU(内存管理单元)中用户加快地址转换的相联存储器,主要存放页表文件(虚拟地址到物理地址的转换表)。TLB技术的基本思想是当处理器要在主内存寻址时,不是直接在内存的物理地址里查找的,而是通过一组虚拟地址转换到主内存的物理地址,TLB就是负责将虚拟内存地址翻译成实际的物理内存地址,而CPU寻址时会优先在TLB中进行寻址。“影子TLB”指本发明中维护的一个保存GVA到HPA的映射关系表,其表项的数据结构与物理TLB表项一致。当客户机载入运行之前,影子页表会被VMM刷入物理TLB中。这样,当客户机运行时,物理TLB(实际上是影子TLB)就能够完成GVA到HPA的直接映射。本发明的技术方案如下:一种面向MIPS平台的内存虚拟化方法,其总体架构如图1所示。图1主要是从功能划分的角度进行说明。一种面向MIPS平台的内存虚拟化方法采用宿主模型架构,包括如下模块:物理内存、宿主OS、虚拟机内核、内存虚拟化、宿主QEMU进程、虚拟内存以及客户OS。基于以上模块构成,本发明公布了一种面向MIPS平台的内存虚拟化的地址组成方法。共包括四种地址,分别是客户机虚拟地址(GVA),客户机物理地址(GPA),宿主机虚拟地址(HVA)和宿主机物理地址(HPA)。基于以上模块和地址组成,本发明公布了一种面向MIPS平台的内存虚拟化在地址空间组成方法,主要包括四种地址空间:分别是客户机虚拟地址空间、客户机物理地址空间、宿主机虚拟地址空间和宿主机物理地址空间。基于以上模块、地址组成、地址空间组成,本发明公布了一种面向MIPS平台的内存虚拟化的地址组成和地址空间的映射方法,分别是客户机虚拟地址(GVA)属于客户机虚拟地址空间,客户机物理地址(GPA)属于客户机物理地址空间,宿主机虚拟地址(HVA)属于宿主机虚拟地址空间,宿主机物理地址(HPA)属于宿主机物理地址空间。基于以上模块构成、地址组成、地址空间组成方法、以及地址组成和地址空间组成的映射方法,本发明公布了一种面向MIPS平台的内存虚拟化的地址组成和地址空间的映射维护机制,包括客户机TLB和页表,客户机物理页描述符表,宿主机TLB和页表,宿主机机物理页描述符表。基于以上模块构成、地址组成、地址空间组成方法、以及地址组成和地址空间组成的映射方法,本发明公布了一种面向MIPS平台的内存虚拟化地址映射实现流程,其流程核心为构建GVA->HPA的地址映射(GVA->GPA->HVA->HPA),具体流程(如图3)为:S1:客户机(Guest)模块发出访问某个GVA的命令。S2:映射处理(GetPA)模块获得GVA->GPA的映射。S3:映射处理(GetPA)模块获得GPA->HVA的映射。S4:映射处理(GetPA)模块获得HVA->HPA的映射。S5:映射处理(GetPA)模块将三个映射叠加得到(GVA,HPA)映射,填充影子TLB中S6:返回客户机基于以上模块构成、地址组成、地址空间组成方法、以及地址组成和地址空间组成的映射方法、地址映射实现流程,本发明公布了一种面向MIPS平台的内存虚拟化实现方法,该方法的具体实现流程为:S21:内核GVA的影子TLB填充。S22:执行客户机TLB的填充。S23:非内核GVA的影子TLB填充。其中,S21(内核GVA的影子TLB填充)具体流程如图4所示,流程中子步骤为:S1:访问某个GVAS111:判断GVA是否属于客户机内核地址空间?S1112:非内核GVA的处理S1111:执行GPA映射。GPA=GVA&某地址S112:在GPPDT中查找GPA对应的HVAS113:在宿主机TLB中查找HVA对应的HPAS114:将(GVA,HPA)映射存入影子TLB中S6:返回客户机其中S22具体流程如图5所示,流程中子步骤为:S1:访问某个GVAS111:GVA是否属于客户机内核地址空间?S1212:内核GVA的处理S1211:客户机TLB中无(GVA,GPA)映射S122:向客户机注入TLB缺失异常S124:执行TLB指令填充客户机TLBS125:模拟TLB指令S125:返回客户机代码中断处S6:返回客户机其中S23具体流程如图6所示,流程中子步骤为:S1:访问某个GVAS111:GVA是否属于客户机内核地址空间?S1212:内核GVA的处理S1311:在客户机TLB中存在(GVA,GPA)映射?S13112:填充客户机TLBS13111:在GPPDT中查找(GPA,HVA)映射S132:在宿主机TLB中查找(HVA,HPA)映射S133:将(GVA,HPA)映射存入影子TLB中S6:返回客户机。本发明的优点及功效在于:本发明基于对MIPS架构处理器的可虚拟化性进行细致分析,基于轻量级虚拟机KVM和“影子TLB”,发明了一种面向MIPS平台的内存虚拟化方法。根据应用需求,它与现有技术相比,其主要的优点是:(1)克服了MIPS处理器无硬件辅助支持、MIPS平台下内存虚拟化三层地址映射、多个虚拟机对物理内存访问之间的隔离与安全等技术难题,能够对上层虚拟化应用提供支持。(2)由于基于内核级虚拟机进行开发,系统具有轻量级的优点。(3)由于现有的MIPS处理器大部分都存在无硬件辅助支持的问题,并且MIPS处理近年来随着性能的不断提升,已经从传统的面向嵌入式领域,逐渐被服务器领域等尝试和采用,故本发明即可以满足嵌入式领域的虚拟化应用需求,也可以满足服务器领域的虚拟化应用需求。因此,本发明具有轻量级,应用范围广,实现难度适中等特点,具有广阔的应用前景和可产生显著的经济效益。
附图说明
图1.面向MIPS平台的内存虚拟化方法的总体架构示意图图2.面向MIPS平台的内存虚拟化方法的地址空间映射方法示意图图3.面向MIPS平台的内存虚拟化方法的流程示意图图4.面向MIPS平台的内存虚拟化方法的内核GVA的影子TLB填充示意图图5.面向MIPS平台的内存虚拟化方法的客户机TLB的填充示意图图6.面向MIPS平台的内存虚拟化方法的非内核GVA的影子TLB填充示意图
具体实施方式
为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施实施实例(以龙芯3A为例)对本发明再作进一步详细的说明。如图1-6所示,一种面向MIPS平台的内存虚拟化方法,具体实施方法如下:以龙芯3A(一种典型的MIPS处理器平台)为例,面向MIPS平台的内存虚拟化方法,其总体架构如图1所示。图1主要是从功能划分的角度进行实施说明。该实例采用宿主模型架构,包括如下模块:物理内存(M1)、宿主OS(M2)、虚拟机内核(M3)、内存虚拟化(M4)、宿主QEMU进程(M4)、虚拟内存(M6)以及客户OS(M5)。基于以上模块构成,如图2所示,本实例中一种面向MIPS平台的内存虚拟化的地址组成方法上,该实例共包括四种地址,分别是客户机虚拟地址(GVA),客户机物理地址(GPA),宿主机虚拟地址(HVA)和宿主机物理地址(HPA)。如图3所示,基于以上模块和地址组成,本实例中一种面向MIPS平台的内存虚拟化在地址空间组成方法,主要包括四种地址空间:分别是客户机虚拟地址空间(GVAS)、客户机物理地址空间(GPAS)、宿主机虚拟地址空间(HVAS)和宿主机物理地址空间(HPAS)。如图3所示,基于以上模块、地址组成、地址空间组成,本实例中的一种面向MIPS平台的内存虚拟化的地址组成和地址空间的映射方法,是客户机虚拟地址(GVA)属于客户机虚拟地址空间,客户机物理地址(GPA)属于客户机物理地址空间,宿主机虚拟地址(HVA)属于宿主机虚拟地址空间,宿主机物理地址(HPA)属于宿主机物理地址空间。如图3所示,基于以上模块、地址组成、地址空间组成和映射方法,一种面向MIPS平台的内存虚拟化的地址和地址空间的映射维护机制上,该实例包括客户机TLB和页表(GTLBPT),客户机物理页描述符表(GPPDT),宿主机TLB和页表(HTLBPT),宿主机机物理页描述符表(以下简称HPPDT)。如图3所示,基于以上模块构成、地址组成、地址空间组成方法、以及地址组成和地址空间组成的映射方法,一种面向MIPS平台的内存虚拟化地址映射实现流程,在本实例中核心是构建GVA->HPA的地址映射(GVA->GPA->HVA->HPA),具体实施流程为:S1:客户机(Guest)模块发出访问一个GVA的命令。S2:映射处理(GetPA)模块获得GVA->GPA的映射。S3:映射处理(GetPA)模块获得GPA->HVA的映射。S4:映射处理(GetPA)模块获得HVA->HPA的映射。S5:映射处理(GetPA)模块将三个映射叠加得到(GVA,HPA)映射,填充影子TLB中。S6:返回客户机。如图6所示,基于以上模块构成、地址组成、地址空间组成方法、以及地址组成和地址空间组成的映射方法、地址映射实现流程,一种面向M1PS平台的内存虚拟化实现方法,其具体实现流程为:S21(图4):内核GVA的影子TLB填充。S22(图5):执行客户机TLB的填充。S23(图6):非内核GVA的影子TLB填充。在本实例中,其中S21(内核GVA的影子TLB填充)具体实施流程如图4所示,具体实现实例描述如下:以0x80000123这个标准操作系统的一个内核VA为例。该VA位于kseg0区域,当处理器访问这个VA时,它被直接映射到0x00000123这个PA上。这个过程没有TLB的参与。当虚拟机将客户OS商议到kseg2时,0x80000123就变成了0xC0000123。这个地址位于kseg2区域,当处理器访问这个GVA时,将自动查找影子TLB。由于影子TLB中不存在GVA的映射,影子TLB缺失异常被触发。在异常处理模块中,本发明利用GPA=GVA&0x3fffffff计算GPA。因此,0xC0000123对应的GPA为0x00000123,恰好与标准操作系统中0x80000123对应的PA相同。本发明的这种处理方式,使GVA的上移对其他部分透明。一旦得到了GVA->GPA的映射,TLB缺失异常处理模块就结合GPPDT中GPA->HVA的映射和宿主TLB中HVA->HPA的映射,计算GVA->HPA的映射,最后填充到影子TLB中,完成内核GVA的影子TLB的填充。在本实例中,其中S22(执行客户机TLB的填充)具体实现流程如图5所示,流程实现描述如下:当某个非内核GVA被客户机第一次访问时,由于影子TLB为空,访问将引发影子TLB缺失异常。对于非客户机内核GVA,影子TLB缺失异常处理程序将尝试在客户机TLB中寻找GVA->GPA的映射。由于GVA是第一被访问,客户机TLB中不存在GVA->GPA的映射,因此,异常处理模块将向客户机中注入TLB缺失异常,以启动客户机TLB的填充过程。之后,异常处理模块返回客户机代码执行。(2)由于本发明向客户机中注入了TLB缺失异常,因此,当客户机再次开始执行时,将直接进入客户机操作系统的标准TLB缺失异常处理模块。标准的TLB缺失异常处理模块将查询客户机的页表获取GVA->GPA的映射,然后使用TLB指令填充客户机TLB。由于TLB指令为特权指令,因此TLB指令的执行将引发TLB指令特权级异常,而陷入到本发明的TLB指令异常处理模块中。本发明解析TLB指令,完成指令的模拟执行,然后返回客户机的TLB缺失异常处理模块。当客户机TLB填充完毕后,执行流将返回到开始引发影子TLB缺失异常的客户机代码处继续执行。在本实例中,其中S23(非内核GVA的影子TLB填充)具体实施流程如图6所示,流程描述如下:当客户机TLB填充完毕后,执行流将返回到开始引发影子TLB缺失异常的客户机代码处继续执行。由于此时影子TLB中仍没有GVA->HPA的映射,因此将再次引发影子TLB缺失异常。由于GVA已经在客户机TLB中填充完毕,异常处理模块通过查询客户机TLB即可得到GVA->GPA的映射。然后,异常处理模块查询GPPDT,获得GPA->HVA的映射,再查询宿主机TLB得到HVA->HPA的映射。最终,通过将GVA->GPA,GPA->HVA,HVA->HPA三个映射叠加起来,得到GVA->HPA的映射,填充到影子TLB中。此时,影子TLB填充完成,执行流返回到引发异常的客户机模块处继续执行。最后所应说明的是:以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。